package com.gy.wx_demo_mg.controller.base;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.gy.wx_demo_mg.entity.ManagerUser;
import com.gy.wx_demo_mg.service.serviceinterface.BaseService;
import com.gy.wx_demo_mg.utils.RSon;

/**
 * @author GY
 * 2017年12月27日
 * 后台管理系统 管理员 登录、注册
 */
@RestController
@RequestMapping("/base")
public class BaseController {
    
    @Autowired
    private BaseService baseService;

    /**
     * @param user
     * @param code
     * @return
     * GY
     * 2017年12月28日
     * 注册接口
     * 参数:管理员用户信息 验证码
     */
    @RequestMapping("/user/regist")
    public RSon regist(ManagerUser user,String code,HttpServletRequest request){
        //入参校验
        RSon rson = registCheck(user,code);
        if(!rson.getCode().equals(RSon.SUCCESS_CODE)){
            //入参校验不通过
            return rson;
        }
        //校验验证码
        boolean checkCodeResult = baseService.checkCode(request,code);
        if(!checkCodeResult){
            //验证码校验不通过
            RSon.error(rson,RSon.CODE_ERROR);
            return rson;
        }
        //注册
        baseService.regist(user,rson);
        return rson;
    }
    /**
     * @param user
     * @return
     * GY
     * 2017年12月27日
     * 注册入参校验
     */
    private RSon registCheck(ManagerUser user,String code){
        if(user==null || StringUtils.isEmpty(code)
                || StringUtils.isEmpty(user.getRegistCode())
                || StringUtils.isEmpty(user.getPassword())
                || StringUtils.isEmpty(user.getUserName())){
            return RSon.error(RSon.EMPTY_ERROR_CODE);
        }
        return RSon.success(null);
    }
    
    /**
     * @param userName
     * @param password
     * @param code
     * @return
     * GY
     * 2017年12月28日
     * 登录接口
     * 参数:用户名 密码 验证码
     */
    @RequestMapping("/user/login")
    public RSon login(String userName,String password,String code,HttpServletRequest request){
        //入参校验
        RSon rson = loginCheck(userName, password, code);
        if(!rson.getCode().equals(RSon.SUCCESS_CODE)){
            //入参校验不通过
            return rson;
        }
        //校验验证码
        boolean checkCodeResult = baseService.checkCode(request,code);
        if(!checkCodeResult){
            //验证码校验不通过
            RSon.error(rson,RSon.CODE_ERROR);
            return rson;
        }
        //注册
        baseService.login(userName, password, rson);
        return rson;
    }
    
    /**
     * @param userName
     * @param password
     * @param code
     * @return
     * GY
     * 2017年12月28日
     * 登录入参校验
     */
    private RSon loginCheck(String userName,String password,String code){
        if(StringUtils.isEmpty(password)
                || StringUtils.isEmpty(password)
                || StringUtils.isEmpty(code)){
            return RSon.error(RSon.EMPTY_ERROR_CODE);
        }
        return RSon.success(null);
    }
    
    /**
     * @param request
     * @param response
     * GY
     * 2017年12月28日
     * 写出图片 -- 前端
     */
    @RequestMapping("/img/code")
    public void login(HttpServletRequest request,HttpServletResponse response){
        request.getSession().setAttribute(BaseService.CODE_KEY, "");
    }
    
}
